home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / java / io / CharArrayReader.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  1.6 KB  |  111 lines

  1. package java.io;
  2.  
  3. public class CharArrayReader extends Reader {
  4.    protected char[] buf;
  5.    protected int pos;
  6.    protected int markedPos = 0;
  7.    protected int count;
  8.  
  9.    public CharArrayReader(char[] var1) {
  10.       this.buf = var1;
  11.       this.pos = 0;
  12.       this.count = var1.length;
  13.    }
  14.  
  15.    public CharArrayReader(char[] var1, int var2, int var3) {
  16.       if (var2 >= 0 && var2 <= var1.length && var3 >= 0 && var2 + var3 >= 0) {
  17.          this.buf = var1;
  18.          this.pos = var2;
  19.          this.count = Math.min(var2 + var3, var1.length);
  20.          this.markedPos = var2;
  21.       } else {
  22.          throw new IllegalArgumentException();
  23.       }
  24.    }
  25.  
  26.    private void ensureOpen() throws IOException {
  27.       if (this.buf == null) {
  28.          throw new IOException("Stream closed");
  29.       }
  30.    }
  31.  
  32.    public int read() throws IOException {
  33.       synchronized(this.lock) {
  34.          this.ensureOpen();
  35.          return this.pos >= this.count ? -1 : this.buf[this.pos++];
  36.       }
  37.    }
  38.  
  39.    public int read(char[] var1, int var2, int var3) throws IOException {
  40.       synchronized(this.lock) {
  41.          this.ensureOpen();
  42.          if (var2 >= 0 && var2 <= var1.length && var3 >= 0 && var2 + var3 <= var1.length && var2 + var3 >= 0) {
  43.             if (var3 == 0) {
  44.                return 0;
  45.             } else if (this.pos >= this.count) {
  46.                return -1;
  47.             } else {
  48.                if (this.pos + var3 > this.count) {
  49.                   var3 = this.count - this.pos;
  50.                }
  51.  
  52.                if (var3 <= 0) {
  53.                   return 0;
  54.                } else {
  55.                   System.arraycopy(this.buf, this.pos, var1, var2, var3);
  56.                   this.pos += var3;
  57.                   return var3;
  58.                }
  59.             }
  60.          } else {
  61.             throw new IndexOutOfBoundsException();
  62.          }
  63.       }
  64.    }
  65.  
  66.    public long skip(long var1) throws IOException {
  67.       synchronized(this.lock) {
  68.          this.ensureOpen();
  69.          if ((long)this.pos + var1 > (long)this.count) {
  70.             var1 = (long)(this.count - this.pos);
  71.          }
  72.  
  73.          if (var1 < 0L) {
  74.             return 0L;
  75.          } else {
  76.             this.pos = (int)((long)this.pos + var1);
  77.             return var1;
  78.          }
  79.       }
  80.    }
  81.  
  82.    public boolean ready() throws IOException {
  83.       synchronized(this.lock) {
  84.          this.ensureOpen();
  85.          return this.count - this.pos > 0;
  86.       }
  87.    }
  88.  
  89.    public boolean markSupported() {
  90.       return true;
  91.    }
  92.  
  93.    public void mark(int var1) throws IOException {
  94.       synchronized(this.lock) {
  95.          this.ensureOpen();
  96.          this.markedPos = this.pos;
  97.       }
  98.    }
  99.  
  100.    public void reset() throws IOException {
  101.       synchronized(this.lock) {
  102.          this.ensureOpen();
  103.          this.pos = this.markedPos;
  104.       }
  105.    }
  106.  
  107.    public void close() {
  108.       this.buf = null;
  109.    }
  110. }
  111.